public class Day7 {
    // 14、最长公共前缀
    public String longestCommonPrefix(String[] strs) {
        // 第二种做法
        // 统一比较
        // 把字符串的所有字符按照对应的位置进行统一比较
        for(int i = 0;i < strs[0].length();i++) {
            char tmp = strs[0].charAt(i);
            for(int j = 1;j < strs.length;j++) {
                // 第一个字符串已将拿出来了，从第二个字符串开始
                // i的长度超过字符串的长度 或者 第一个字符串的后面的字符串的某一个位置和第一个字符串对应位置的字符不相等了，就直接返回
                if(i == strs[j].length() || strs[j].charAt(i) != tmp) {
                    // 因为字符串的长度是从1开始的但是下标是从0开始的

                    // substring是一个左闭右开的
                    return strs[0].substring(0,i);
                }
            }
        }
        return strs[0];
    }

    public String longestCommonPrefix1(String[] strs) {
        // 第一种做法
        // 俩俩比较
        String ret = strs[0];
        for(int i = 1;i < strs.length;i++) {
            // 两个两个进行比较，先比较第一个和第二个，得到前缀之后，再用这个前缀和后面的进行比较，依此类推
            ret = findCommon(strs[i],ret);
        }
        return ret;
    }

    public String findCommon(String s1,String s2) {
        int i = 0;
        while((i < Math.min(s1.length(),s2.length())) && s1.charAt(i) == s2.charAt(i)) {
            i++;
        }
        // substring是一个左闭右开的
        return s1.substring(0,i);
    }
}
